#include "interrupt.h"
#include "app.h"
#include "kernel.h"
#include "cpu.h"
#include "scidriver.h"

INT16U ADC_ConvertedValue[ADC_CHANNEL_NUM]; // DMA存储ADC结果的数组


void NMI_Handler(void)
{
}


void HardFault_Handler(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
  }
}

void MemManage_Handler(void)
{
  /* Go to infinite loop when Memory Manage exception occurs */
  while (1)
  {
  }
}

void BusFault_Handler(void)
{
  /* Go to infinite loop when Bus Fault exception occurs */
  while (1)
  {
  }
}

void UsageFault_Handler(void)
{
  /* Go to infinite loop when Usage Fault exception occurs */
  while (1)
  {
  }
}


#ifndef RTE_CMSIS_RTOS_RTX
void SVC_Handler(void)
{
}
#endif


void DebugMon_Handler(void)
{
}


#ifndef RTE_CMSIS_RTOS_RTX
//void PendSV_Handler(void)
//{
//}
#endif

/**
  * @brief  This function handles SysTick Handler.
  * @param  None
  * @retval None
  */
#ifndef RTE_CMSIS_RTOS_RTX
void SysTick_Handler(void)
{
	
	TimingDelay_Decrement();
	OSTimerTick();
    OSIntExit();  /* Tell uC/OS-II that we are leaving the ISR */
}
#endif

void USART1_IRQHandler(void)                	//串口1中断服务程序
{
	if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
	{
		sSciRxISR(ComDevice2);
		USART_ClearITPendingBit(USART1, USART_IT_RXNE);
	}
	
	if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)
	{  
		sSciTxISR(ComDevice2);
		USART_ClearITPendingBit(USART1, USART_IT_TXE);
	}	
}

void USART2_IRQHandler(void)                	//串口2中断服务程序 -- 副按键板
{ 	
	if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
	{
		USART_ClearITPendingBit(USART2, USART_IT_RXNE);
		sSciRxISR(ComDevice1);
		USART_ClearITPendingBit(USART2, USART_IT_RXNE);
	}
	
	if(USART_GetITStatus(USART2, USART_IT_TXE) != RESET)
	{  
		sSciTxISR(ComDevice1);		
		USART_ClearITPendingBit(USART2, USART_IT_TXE);
	}		
}

void USART3_IRQHandler(void)                	//串口3中断服务程序
{ 	
	if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
	{
		USART_ClearITPendingBit(USART3, USART_IT_RXNE);
		sSciRxISR(ComMainBrd);
		USART_ClearITPendingBit(USART3, USART_IT_RXNE);
	}
	
	if(USART_GetITStatus(USART3, USART_IT_TXE) != RESET)
	{  
		sSciTxISR(ComMainBrd);		
		USART_ClearITPendingBit(USART3, USART_IT_TXE);
	}			
}


void UART4_IRQHandler(void)                	//串口4中断服务程序
{ 	
	if(USART_GetITStatus(UART4, USART_IT_RXNE) != RESET)
	{
		USART_ClearITPendingBit(UART4, USART_IT_RXNE);
		sSciRxISR(ComDevice2);
		USART_ClearITPendingBit(UART4, USART_IT_RXNE);
	}
	
	if(USART_GetITStatus(UART4, USART_IT_TXE) != RESET)
	{  
		sSciTxISR(ComDevice2);		
		USART_ClearITPendingBit(UART4, USART_IT_TXE);
	}		
}

void UART5_IRQHandler(void)                	//串口5中断服务程序
{ 	
	if(USART_GetITStatus(UART5, USART_IT_RXNE) != RESET)
	{
		USART_ClearITPendingBit(UART5, USART_IT_RXNE);
		sSciRxISR(ComDevice3);
		USART_ClearITPendingBit(UART5, USART_IT_RXNE);
	}
	
	if(USART_GetITStatus(UART5, USART_IT_TXE) != RESET)
	{  
		sSciTxISR(ComDevice3);		
		USART_ClearITPendingBit(UART5, USART_IT_TXE);
	}		
}


